package com.example.mydesignmodule.command;

/**
 * @author tgw
 * @date 2021/3/1
 * @describe  命令模式
 */
class CommandRunMain {

    public static void main(String[] args) {
        //构造一个接收者
        Receiver receiver = new Receiver();
        //根据接收者 对象构造一个命令对象
        Command commandStart = new CommandConcretedStart(receiver);
        Command commandStartUp = new CommandConcretedStartUp(receiver);
        Command commandStartDown = new CommandConcretedStartDown(receiver);
        //根据具体的对象构造请求者对象，如果有多个Command的子类 可以在Invoke中使用 集合存储 取值
        Invoke invoke = new Invoke(commandStart);
        invoke.action();
        invoke = new Invoke(commandStartUp);
        invoke.action();
        invoke = new Invoke(commandStartDown);
        //执行请求对象
        invoke.action();
    }
}
